package com.frogs.ucenter.v1.service;

import com.frogs.system.web.api.request.Request;
import com.frogs.system.web.api.response.Response;
import com.frogs.ucenter.v1.request.UserAccountAuthorizationUpdateRequest;

public interface UserAccountInfoService {

	/**
	 * 账号新增
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response insert(Request request) throws Exception;

	/**
	 * 验证用户名
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response verifyName(Request request) throws Exception;

	/**
	 * 验证邮箱
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response verifyEmail(Request request) throws Exception;

	/**
	 * 验证手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response verifyPhone(Request request) throws Exception;

	/**
	 * 用户登录
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response login(Request request) throws Exception;

	/**
	 * 验证用户是否登录
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response isLogin(Request request) throws Exception;

	/**
	 * 获取用户详细信息
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response getUser(Request request) throws Exception;

	/**
	 * 更新账号信息
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response update(Request request) throws Exception;
	/**
	 * 更新邮箱认证有效性
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response updateEmailValid(Request request) throws Exception;

	/**
	 * 忘记密码账号验证
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response lostpasswordByAccount(Request request) throws Exception;

	/**
	 * 用户退出
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response logout(Request request) throws Exception;

	/**
	 * 发送找回密码验证的邮箱
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response sendEmailByLostpassword(Request request) throws Exception;

	/**
	 * 重置密码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response resetPasswd(Request request) throws Exception;

	/**
	 * 验证登录加密串
	 * @param verifyCode
	 * @param userId
	 * @param ip
	 * @throws Exception 
	 */
	void verify(String verifyCode, Integer userId, String ip) throws Exception;
	
	/**
	 * 更新密码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response updatePasswd(Request request) throws Exception;

	/**
	 * 绑定账号邮箱
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response bindEmail(Request request) throws Exception;

	/**
	 * 解绑账号邮箱
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response unbindEmail(Request request) throws Exception;

	/**
	 * 绑定账号手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response bindPhone(Request request) throws Exception;

	/**
	 * 解绑手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response unbindPhone(Request request) throws Exception;

	/**
	 * 根据手机号码重置密码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response resetPasswdByPhone(Request request) throws Exception;

	/**
	 * 微信注册
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response autoRegister(Request request) throws Exception;

	/**
	 * 获取微信用户信息
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response getWechatUserInfo(Request request) throws Exception;

	/**
	 * 更新微信用户信息
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response updateWechatUserInfo(Request request) throws Exception;

	/**
	 * 免密码登录
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response loginNoPassword(Request request) throws Exception;

	/**
	 * 绑定微信用户的手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response bindWechatUserPhone(Request request) throws Exception;

	/**
	 * 取消绑定微信用户的手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response unbindWechatUserPhone(Request request) throws Exception;

	/**
	 * 验证微信用户的手机号码
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response verifyWechatPhone(Request request) throws Exception;

	/**
	 * 第三方登录接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response openPlatformLogin(Request request) throws Exception;

	/**
	 * 第三方绑定接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response bindOpenPlatformLogin(Request request) throws Exception;

	/**
	 * 手机动态密码登录接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response loginByDynamicPassword(Request request) throws Exception;

	/**
	 * 发送手机动态密码接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response sendDynamicPaswordByUsername(Request request) throws Exception;

	/**
	 * 判断该账户是否有绑定手机号接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response isBindPhoneByUsername(Request request) throws Exception;

	/**
	 * 发送开发平台用户激活邮件接口
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response sendActivataAccountEmail(Request request) throws Exception;
	
	/**
	 * 查询用户列表
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response listUserAccount(Request request) throws Exception;

	/**
	 * 获取用户详细信息（泰康）
	 * 
	 * @param request
	 * @return
	 * @throws Exception 
	 */
	Response getUserByTaikang(Request request) throws Exception;

	/**
	 * 更新用户的授权状态
	 * @param request
	 * @return
	 */
	Response updateAuthorization(Request request);

	/**
	 * 更新用户的新手状态
	 * @param request
	 * @return
	 */
	Response updateNovice(Request request);

	/**
	 * 获取用户授权信息
	 * @param request
	 * @return
	 */
	Response obtainAuthorization(Request request);
}
